pub fn dp_rec_mc(amount: u32) -> u32 {
    // Just greedy, because greater number can always be made up of small numbers.
    // Always exists an answer.
    if amount == 0 {
        return 0;
    }

    let nums = vec![100,50,30,20,10,5,2,1];

    let mut rest = amount;
    let mut cnt = 0;
    for nums_it in nums {
        if nums_it > rest {
            continue;
        }
        cnt += rest / nums_it;
        rest = rest % nums_it;
        if rest == 0 {
            return cnt;
        }
    }

    panic!("Should always exists an answer.");
}
